package ReflectionLearn;


import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * @author Lenl
 * @version v1.0
 * @create 2021-06-06 23:51
 * @description
 */
public class ClassLoaderTest {
    @Test
    public void test1(){
        ClassLoader classLoader=ClassLoaderTest.class.getClassLoader();
        System.out.println(classLoader);//系统类加载器(自定义类)

        ClassLoader classLoader1= classLoader.getParent();
        System.out.println(classLoader1);//扩展类加载器

        //引导类加载器主要负责加载java的核心类库，无法加载自定义类
        ClassLoader classLoader2=classLoader1.getParent();
        System.out.println(classLoader2);//引导类加载器，但获取不到，为Null
        System.out.println(String.class.getClassLoader());//引导类加载器，但获取不到，为Null
    }

    /**
     * Properties:用来读取配置文件
     */
    @Test
    public void test2() throws IOException {
        Properties pros=new Properties();
        //此时文件默认在当前的module下
        //读取配置文件的方式一：
//        FileInputStream fis=new FileInputStream("jdbc.properties");
//        pros.load(fis);
        //读取配置文件的方式二：
        ClassLoader classLoader=ReflectionTest.class.getClassLoader();
        //classLoader只会在module的src下寻找配置文件
        InputStream is=classLoader.getResourceAsStream("jdbc.properties");
        pros.load(is);

        String user= pros.getProperty("user");
        String pwd=pros.getProperty("password");
        System.out.println("user="+user+";pwd="+pwd);
    }
}
